from bs4 import BeautifulSoup  # 贵族名宠网页爬虫
import requests
import urllib.request

# 网址
url = 'http://www.hengdadog.com/sale-1.html'


def allpage():  # 获得所有网页
    all_url = []
    for i in range(1, 8):
        each_url = url.replace(url[-6], str(i))  # 替换
        all_url.append(each_url)
    return (all_url)  # 返回地址列表


if __name__ == '__main__':
    img_url = allpage()  # 调用函数
    for url in img_url:
        # 获得网页源代码
        print(url)
        requ = requests.get(url)
        req = requ.text.encode(requ.encoding).decode()
        html = BeautifulSoup(req, 'lxml')
        t = 0
        #     -------------------------------------------------------------------------------------------------------
        # 选择目标url
        img_urls = html.find_all('img')
        for k in img_urls:
            img = k.get('src')  # 图片                     #直接得到内容，非列表
            print(img)
            name = str(k.get('alt'))  # 名字                      无括号         这里的强制类型转换很重要
            type(name)
            #     -------------------------------------------------------------------------------------------------------
            # 保存图片并且命名

            path = 'H:\\新建文件夹\\贵族名宠\\'  # 路径
            file_name = path + name + '.jpg'
            # 存储入文件
            imgs = requests.get(img)
            #   -------------------------------------------------------------------------------------------------------
            #                                                                                 #保存文件的方法1
            #             try:
            #                 t+=1
            #                 with open(file_name,'ab+') as f:
            #                     f.write(imgs.content)
            #                 print('第%d张图片正在下载' %t)
            #             except:
            #                 print('error')

            # 保存文件的方法2
            try:
                urllib.request.urlretrieve(img, file_name)  # 打开图片地址，下载图片保存在本地，
                # urllib.request.urlretrieve(img,'{0}{1}.jpg'.format(path,name)) #打开图片地址，下载图片保存在本地，
            except:
                print("error")

#                                                                                #保存文件的方法3
#             try:
#                 f = open(file_name, 'ab+')     #打开
#                 f.write(imgs.content)        #写入
#                 f.close()                     #关闭
#             except:
#                 print("error")


